﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
using System.Configuration;
using System.ComponentModel.DataAnnotations;
using TracNghiem.Models;
using System.Collections.ObjectModel;
using System.Web.Mvc;
using System.Data.OracleClient;

namespace TracNghiem.Models
{
    public class Test_ServiceModel
    {
        public string id { get; set; }
        [Required(ErrorMessage = "Tên chủ đề không được để trống!")]
        public string  name{ get; set; }
        [Required(ErrorMessage = "Thời gian không được để trống!")]
        public string thoi_gian { get; set; }  
        public string  ghi_chu{ get; set; }
        public string status { get; set; }
        public string ngay_tao { get; set; }
        public string ngay_ket_thuc { get; set; }
        public string is_pattern { get; set; }
        public string is_test { get; set; }
        public string dichvu_id { get; set; }        
        public string ten_dich_vu { get; set; }
        public SelectList service_id { get; set; }
        public List<Test_ServiceModel> getTest()
        {
            List<Test_ServiceModel> Test_Service = new List<Test_ServiceModel>();
            OracleDataReader odr = General.Lib_GetDataReader("SELECT a.*,b.name ten_dich_vu FROM de_thi a,dichvu b where a.dichvu_id=b.id order by b.id,a.ngay_ket_thuc desc,a.name");
            int ngay_taoIndex=0;
            int ngay_ket_thucIndex=0;
            while (odr.Read())
            {
                ngay_taoIndex = odr.GetOrdinal("ngay_tao");
                ngay_ket_thucIndex = odr.GetOrdinal("ngay_ket_thuc");
                Test_Service.Add(new Test_ServiceModel
                {
                    id = odr["id"].ToString(),
                    name = odr["name"].ToString(),
                    thoi_gian = odr["thoi_gian"].ToString(),
                    ghi_chu = odr["ghi_chu"].ToString(),
                    status = odr["status"].ToString()=="1"?"Bình thường":"Khóa",
                    ngay_tao = odr.IsDBNull(ngay_taoIndex) ? null : odr.GetDateTime(ngay_taoIndex).ToString("dd/MM/yyyy"),
                    ngay_ket_thuc = odr.IsDBNull(ngay_ket_thucIndex) ? null : odr.GetDateTime(ngay_ket_thucIndex).ToString("dd/MM/yyyy"),
                    is_pattern = odr["is_pattern"].ToString(),
                    is_test = odr["is_test"].ToString(),
                    dichvu_id = odr["dichvu_id"].ToString(),
                    ten_dich_vu = odr["ten_dich_vu"].ToString()
                });
            }
            General.conn_global.Close();
            return Test_Service;
        }
        public List<Test_ServiceModel> getTestAll()
        {
            List<Test_ServiceModel> Test_Service = new List<Test_ServiceModel>();
            OracleDataReader odr = General.Lib_GetDataReader("SELECT a.* FROM de_thi a where a.dichvu_id is null order by a.ngay_ket_thuc desc,a.name");
            int ngay_taoIndex = 0;
            int ngay_ket_thucIndex = 0;
            while (odr.Read())
            {
                ngay_taoIndex = odr.GetOrdinal("ngay_tao");
                ngay_ket_thucIndex = odr.GetOrdinal("ngay_ket_thuc");
                Test_Service.Add(new Test_ServiceModel
                {
                    id = odr["id"].ToString(),
                    name = odr["name"].ToString(),
                    thoi_gian = odr["thoi_gian"].ToString(),
                    ghi_chu = odr["ghi_chu"].ToString(),
                    status = odr["status"].ToString() == "1" ? "Bình thường" : "Khóa",
                    ngay_tao = odr.IsDBNull(ngay_taoIndex) ? null : odr.GetDateTime(ngay_taoIndex).ToString("dd/MM/yyyy"),
                    ngay_ket_thuc = odr.IsDBNull(ngay_ket_thucIndex) ? null : odr.GetDateTime(ngay_ket_thucIndex).ToString("dd/MM/yyyy"),
                    is_test = odr["is_test"].ToString(),
                    is_pattern = odr["is_pattern"].ToString()
                });
            }
            General.conn_global.Close();
            return Test_Service;
        }
        public List<Test_ServiceModel> getTestById(int id)
        {
            List<Test_ServiceModel> Test_Service = new List<Test_ServiceModel>();
            OracleDataReader odr = General.Lib_GetDataReader("SELECT a.*,b.name ten_dich_vu FROM de_thi a,dichvu b where a.dichvu_id=b.id and a.id="+id+" order by b.id,a.ngay_ket_thuc desc,a.name");
            int ngay_taoIndex = 0;
            int ngay_ket_thucIndex = 0;
            while (odr.Read())
            {
                ngay_taoIndex = odr.GetOrdinal("ngay_tao");
                ngay_ket_thucIndex = odr.GetOrdinal("ngay_ket_thuc");
                Test_Service.Add(new Test_ServiceModel
                {
                    id = odr["id"].ToString(),
                    name = odr["name"].ToString(),
                    thoi_gian = odr["thoi_gian"].ToString(),
                    ghi_chu = odr["ghi_chu"].ToString(),
                    status = odr["status"].ToString() == "1" ? "Bình thường" : "Khóa",
                    ngay_tao = odr.IsDBNull(ngay_taoIndex) ? null : odr.GetDateTime(ngay_taoIndex).ToString("dd/MM/yyyy"),
                    ngay_ket_thuc = odr.IsDBNull(ngay_ket_thucIndex) ? null : odr.GetDateTime(ngay_ket_thucIndex).ToString("dd/MM/yyyy"),
                    dichvu_id = odr["dichvu_id"].ToString(),
                    ten_dich_vu = odr["ten_dich_vu"].ToString()
                });
            }
            General.conn_global.Close();
            return Test_Service;
        }

        public List<Test_ServiceModel> getTestByDichvu(int id)
        {
            List<Test_ServiceModel> Test_Service = new List<Test_ServiceModel>();
            string date_now = DateTime.Now.ToString("dd/MM/yyyy");
            OracleDataReader odr = General.Lib_GetDataReader("SELECT a.*,b.name ten_dich_vu FROM de_thi a,dichvu b where a.dichvu_id=b.id and a.ngay_ket_thuc>to_date('" + date_now + "','dd/mm/yyyy') and a.status=1 and b.id=" + id + " order by b.id,a.ngay_ket_thuc desc,a.name");
            int ngay_taoIndex = 0;
            int ngay_ket_thucIndex = 0;
            while (odr.Read())
            {
                ngay_taoIndex = odr.GetOrdinal("ngay_tao");
                ngay_ket_thucIndex = odr.GetOrdinal("ngay_ket_thuc");
                Test_Service.Add(new Test_ServiceModel
                {
                    id = odr["id"].ToString(),
                    name = odr["name"].ToString(),
                    thoi_gian = odr["thoi_gian"].ToString(),
                    ghi_chu = odr["ghi_chu"].ToString(),
                    status = odr["status"].ToString() == "1" ? "Bình thường" : "Khóa",
                    ngay_tao = odr.IsDBNull(ngay_taoIndex) ? null : odr.GetDateTime(ngay_taoIndex).ToString("dd/MM/yyyy"),
                    ngay_ket_thuc = odr.IsDBNull(ngay_ket_thucIndex) ? null : odr.GetDateTime(ngay_ket_thucIndex).ToString("dd/MM/yyyy"),
                    dichvu_id = odr["dichvu_id"].ToString(),
                    ten_dich_vu = odr["ten_dich_vu"].ToString()
                });
            }
            General.conn_global.Close();
            return Test_Service;
        }

        public List<Test_ServiceModel> getTestByDichvuAll()
        {
            string date_now = DateTime.Now.ToString("dd/MM/yyyy");
            List<Test_ServiceModel> Test_Service = new List<Test_ServiceModel>();
            OracleDataReader odr = General.Lib_GetDataReader("select * from de_thi a where dichvu_id is null and a.ngay_ket_thuc>to_date('" + date_now + "','dd/mm/yyyy') and a.status=1 order by a.is_test desc,a.id desc");
            int ngay_taoIndex = 0;
            int ngay_ket_thucIndex = 0;
            while (odr.Read())
            {
                ngay_taoIndex = odr.GetOrdinal("ngay_tao");
                ngay_ket_thucIndex = odr.GetOrdinal("ngay_ket_thuc");
                Test_Service.Add(new Test_ServiceModel
                {
                    id = odr["id"].ToString(),
                    name = odr["name"].ToString(),
                    thoi_gian = odr["thoi_gian"].ToString(),
                    ghi_chu = odr["ghi_chu"].ToString(),
                    status = odr["status"].ToString() == "1" ? "Bình thường" : "Khóa",
                    is_test = odr["is_test"].ToString(),
                    ngay_tao = odr.IsDBNull(ngay_taoIndex) ? null : odr.GetDateTime(ngay_taoIndex).ToString("dd/MM/yyyy"),
                    ngay_ket_thuc = odr.IsDBNull(ngay_ket_thucIndex) ? null : odr.GetDateTime(ngay_ket_thucIndex).ToString("dd/MM/yyyy")                    
                });
            }
            General.conn_global.Close();
            return Test_Service;
        }
        public void addTest_Service(Test_ServiceModel ts)
        {
            string ngay_ket_thuc="";
            if(ts.ngay_ket_thuc!=null)
                ngay_ket_thuc = "to_date('" + ts.ngay_ket_thuc+"','dd/mm/yyyy'),";
            else
                ngay_ket_thuc = "to_date('31/1/2024','dd/mm/yyyy'),";
            string sql = "INSERT INTO de_thi";
            sql += " select nvl((select max(id)+1 from de_thi),1),'" + ts.name + "','" + ts.ghi_chu + "'," + ts.status + ",to_date('" + ts.ngay_tao + "','dd/mm/yyyy'),"+ngay_ket_thuc+"'" + ts.dichvu_id + "',"+ts.thoi_gian+" from dual";
            General.Lib_ExecuteNonQuery(sql);
            General.conn_global.Close();
        }

        public List<Test_ServiceModel> FindTest_Service(string str)
        {
            List<Test_ServiceModel> Test_Service = new List<Test_ServiceModel>();
            string sql = "SELECT a.*,b.name ten_dich_vu FROM de_thi a,dichvu b WHERE a.dichvu_id=b.id and " + str;
            OracleDataReader odr = General.Lib_GetDataReader(sql);
            int ngay_taoIndex = 0;
            int ngay_ket_thucIndex = 0;
            while (odr.Read())
            {
                ngay_taoIndex = odr.GetOrdinal("ngay_tao");
                ngay_ket_thucIndex = odr.GetOrdinal("ngay_ket_thuc");
                Test_Service.Add(new Test_ServiceModel
                {
                    id = odr["id"].ToString(),
                    name = odr["name"].ToString(),
                    thoi_gian = odr["thoi_gian"].ToString(),
                    ghi_chu = odr["ghi_chu"].ToString(),
                    status = odr["status"].ToString() == "1" ? "Bình thường" : "Khóa",
                    ngay_tao = odr.IsDBNull(ngay_taoIndex) ? null : odr.GetDateTime(ngay_taoIndex).ToString("dd/MM/yyyy"),
                    ngay_ket_thuc = odr.IsDBNull(ngay_ket_thucIndex) ? null : odr.GetDateTime(ngay_ket_thucIndex).ToString("dd/MM/yyyy"),
                    dichvu_id = odr["dichvu_id"].ToString(),
                    ten_dich_vu = odr["ten_dich_vu"].ToString()
                });
            }
            General.conn_global.Close();
            return Test_Service;
        }
        
    }
}